/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.knolle.proveedorServicios;


import java.util.Arrays;
import java.util.List;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.marcelo.agro.core.api.IProductos;
import org.marcelo.agro.entidades.*;
import org.openide.util.lookup.ServiceProvider;

/**
 *
 * @author marcelo
 */
@ServiceProvider(service = IProductos.class)
public class ProductosDatabase extends DefaultDatabase<Productos> implements IProductos
{
    
    private final String MENSAJE_ERROR_SIMILAR_NULO = "El nombre es nulo";
    //Por si algun dia requiero internazionalizar
//    private Locale DEFAULT_LOCALE = Locale.getDefault();
    
    @Override
    public List<Productos> FindProductos(String nombre, MatchMode matchMode, Boolean ignoreCase) {
        //Restricciones de busqueda
        if (nombre == null){
           throw new NullPointerException(MENSAJE_ERROR_SIMILAR_NULO);
        }
        //Convertir parametros
        if (ignoreCase) {
        //Algo
        }
        Productos producto = new Productos();
        producto.setNombre(nombre);
//        try {
           return searchObjectsLike(producto, Order.asc(DEFAULT_ORDEN));
//        }
//        catch (Exception e) {
//            Notificaciones.notificar(MENSAJE_ERROR_CONSULTA, e.toString());
//        }
//        return new ArrayList<Productos>();
    }

   
    
    @Override
    public Boolean esUnico(Productos productos)  {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public List<Productos> find(Productos object) {
//         try {
             return getFilteredObjects(Productos.class, 
                 Arrays.asList(Restrictions.eq("nombre", object.getNombre())), 
                 Order.asc(DEFAULT_ORDEN));
//         }
//        catch (Exception e) {
//            Notificaciones.notificar(MENSAJE_ERROR_CONSULTA, e.toString());
//        }
//        return new ArrayList<Productos>();
    }

    @Override
    public List<Productos> getAll() {
        return getAll(Productos.class);
    }

    @Override
    public Boolean esUnico(String nombre) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public List<Grupo> getGrupos() {
       return getAllObjects(Grupo.class, Order.asc(DEFAULT_ORDEN));
    }

    @Override
    public List<Fabricante> getFabricantes() {
        return getAllObjects(Fabricante.class, Order.asc(DEFAULT_ORDEN));
    }

    @Override
    public List<Registrante> getRegistrantes() {
        return getAllObjects(Registrante.class, Order.asc(DEFAULT_ORDEN));
    }

    @Override
    public List<TipoPresentacion> getTipoPresentaciones() {
        return getAllObjects(TipoPresentacion.class,Order.asc(DEFAULT_ORDEN));
    }

    @Override
    public List<Pais> getPaises() {
        return getAllObjects(Pais.class,Order.asc(DEFAULT_ORDEN));
    }
    
    

    
}
